#pragma once

#include "njm_model.hpp"

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/glm.hpp>
#include <glm/gtc/constants.hpp>

namespace njm
{
    // components
    struct Tag
    {
        std::string tag;
    };

    struct Model
    {
        NjmModel::id_t modelId;
    };
    
    struct Gravity
    {
        glm::vec3 force;
    };

    struct RigidBody
    {
        glm::vec3 velocity;
        glm::vec3 acceleration;
    };

    struct Transform
    {
        glm::vec3 position;
        glm::vec3 rotation;
        glm::vec3 scale;
        glm::mat4 mat4();
        glm::mat3 normalMatrix();
    };

    struct Material
    {
        glm::vec4 color;
    };
}
